home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_400 / 405_01 / flexpp / changes < prev    next >
Encoding:
Text File  |  1993-08-28  |  15.8 KB  |  417 lines

  1.  
  2. Changes between 3.0.3 and 2.3.8-6
  3.     - scan.l : add a header_skeleton_out() in rule ^"%%".* in
  4.         order to include header skeleton section between section 1 and 2
  5. Changes between 3.0.3 and 2.3.8-5
  6.     - sent to CUG 
  7. Changes between 3.0.3 and 2.3.8-4
  8.     - main.c: change version name to (flex version-flex++ release), ie flex++-2.3.8-4
  9.         - flexskel.cc : add #define YY_USE_CLASS if C++  line 39
  10.         - main.cc :  line 876. accept the digits in #ifndef guard symbol name, instead of mapping them to underscore.
  11. Changes between 3.0.2 and 3.0.3 
  12.     - regenerated scan.c (and initscan.c) to use newest skeleton
  13.     - Makefile:make test does not fail if diff fail, because it is always
  14.          the case. The #line directives are always differents .
  15.     - makefile: mail big test will fail on fast table, because there
  16.      is variable trailing context. don't worry
  17.     - Notes.txt : creation of this file, with mail transaction
  18. Version 3.0.2 sent to compiler.iecc.com
  19. Changes between 3.0.1 and 3.0.2
  20.     - flexskel.cc : remove include osfcn.h for dos
  21.     - flexskel.cc : define _MSDOS if MSDOS defined or __MSDOS__
  22.     - flexskel.cc : dquote remaining at end of line in debug code only. corrected.
  23.     - main.c : mismatch between FILE* and char* when searching skeletons in getenv("INIT") on DOS.corrected.
  24.     - main.c : mismatch that make .cpp suffix not to be replaced by .h in header. corrected.
  25.     - flex++.1.dman : class declaration added in man page.
  26. Changes between 3.0.0 and 3.0.1
  27.     - use Patch #8 (21Feb93) of flex 2.3.8:
  28.     - flex++.1.dman : remove stupid reference to %define PARSE_PARAM...
  29. > Changes between 2.3 Patch #8 (21Feb93) and 2.3 Patch #7:
  30. >     - Fixed bugs in dynamic memory allocation leading to grievous
  31. >       fencepost problems when generating large scanners.
  32. >     - Fixed bug causing infinite loops on character classes with 8-bit
  33. >       characters in them.
  34. >     - Fixed bug in matching repetitions with a lower bound of 0.
  35. >     - Fixed bug in scanning NUL characters using an "interactive" scanner.
  36. >     - Fixed bug in using yymore() at the end of a file.
  37. >     - Fixed bug in misrecognizing rules with variable trailing context.
  38. >     - Fixed bug compiling flex on Suns using gcc 2.
  39. >     - Fixed bug in not recognizing that input files with the character
  40. >       ASCII 128 in them require the -8 flag.
  41. >     - Fixed bug that could cause an infinite loop writing out
  42. >       error messages.
  43. >     - Fixed bug in not recognizing old-style lex % declarations if
  44. >       followed by a tab instead of a space.
  45. >     - Fixed potential crash when flex terminated early (usually due
  46. >       to a bad flag) and the -v flag had been given.
  47. >     - Added some missing declarations of void functions.
  48. >     - Changed to only use '\a' for __STDC__ compilers.
  49. >     - Updated mailing addresses.
  50. Changes between 3.0.0 and 2.3.7 by coetmeur@icdc.fr
  51.     - many things changed !!!
  52.     - header can be generated
  53.     - %header{ in section 1 and 2 
  54.     - %define in section 1 
  55.     - %name in section 1 
  56.     - use 2 skeletons header and code flexskel.cc and flexskel.h
  57.     - if no header generated, merge with code, else #include 
  58.     - -g option change the name of #include 
  59.     - -h option activate header generation and choose name 
  60.     - -o option choose output name 
  61.     - -h without name use lex.yy.h or the output (-o) appended/replaced with .h suffix. 
  62.     - -H option change header skeleton 
  63.     - skeleton support C++, and generate classes
  64.     - many things can be changed by %define (names...)
  65.     - compatibility with older version,  if no header generated.
  66.     - C++ comment supported
  67.     - #line automaticaly added in skeleton
  68.     - coherent with bison++ version proposed by same author
  69. Changes between 2.3 Patch #7 (28Mar91) and 2.3 Patch #6:
  70.  
  71.     - Fixed out-of-bounds array access that caused bad tables
  72.       to be produced on machines where the bad reference happened
  73.       to yield a 1.  This caused problems installing or running
  74.       flex on some Suns, in particular.
  75.  
  76.  
  77. Changes between 2.3 Patch #6 (29Aug90) and 2.3 Patch #5:
  78.  
  79.     - Fixed a serious bug in yymore() which basically made it
  80.       completely broken.  Thanks goes to Jean Christophe of
  81.       the Nethack development team for finding the problem
  82.       and passing along the fix.
  83.  
  84.  
  85. Changes between 2.3 Patch #5 (16Aug90) and 2.3 Patch #4:
  86.  
  87.     - An up-to-date version of initscan.c so "make test" will
  88.       work after applying the previous patches
  89.  
  90.  
  91. Changes between 2.3 Patch #4 (14Aug90) and 2.3 Patch #3:
  92.  
  93.     - Fixed bug in hexadecimal escapes which allowed only digits,
  94.       not letters, in escapes
  95.     - Fixed bug in previous "Changes" file!
  96.  
  97.  
  98. Changes between 2.3 Patch #3 (03Aug90) and 2.3 Patch #2:
  99.  
  100.     - Correction to patch #2 for gcc compilation; thanks goes to
  101.       Paul Eggert for catching this.
  102.  
  103.  
  104. Changes between 2.3 Patch #2 (02Aug90) and original 2.3 release:
  105.  
  106.     - Fixed (hopefully) headaches involving declaring malloc()
  107.       and free() for gcc, which defines __STDC__ but (often) doesn't
  108.       come with the standard include files such as <stdlib.h>.
  109.       Reordered #ifdef maze in the scanner skeleton in the hope of
  110.       getting the declarations right for cfront and g++, too.
  111.  
  112.     - Note that this patch supercedes patch #1 for release 2.3,
  113.       which was never announced but was available briefly for
  114.       anonymous ftp.
  115.  
  116.  
  117. Changes between 2.3 (full) release of 28Jun90 and 2.2 (alpha) release:
  118.  
  119.     User-visible:
  120.  
  121.     - A lone <<EOF>> rule (that is, one which is not qualified with
  122.       a list of start conditions) now specifies the EOF action for
  123.       *all* start conditions which haven't already had <<EOF>> actions
  124.       given.  To specify an end-of-file action for just the initial
  125.       state, use <INITIAL><<EOF>>.
  126.  
  127.     - -d debug output is now contigent on the global yy_flex_debug
  128.       being set to a non-zero value, which it is by default.
  129.  
  130.     - A new macro, YY_USER_INIT, is provided for the user to specify
  131.       initialization action to be taken on the first call to the
  132.       scanner.  This action is done before the scanner does its
  133.       own initialization.
  134.  
  135.     - yy_new_buffer() has been added as an alias for yy_create_buffer()
  136.  
  137.     - Comments beginning with '#' and extending to the end of the line
  138.       now work, but have been deprecated (in anticipation of making
  139.       flex recognize #line directives).
  140.  
  141.     - The funky restrictions on when semi-colons could follow the
  142.       YY_NEW_FILE and yyless macros have been removed.  They now
  143.       behave identically to functions.
  144.  
  145.     - A bug in the sample redefinition of YY_INPUT in the documentation
  146.       has been corrected.
  147.  
  148.     - A bug in the sample simple tokener in the documentation has
  149.       been corrected.
  150.  
  151.     - The documentation on the incompatibilities between flex and
  152.       lex has been reordered so that the discussion of yylineno
  153.       and input() come first, as it's anticipated that these will
  154.       be the most common source of headaches.
  155.  
  156.  
  157.     Things which didn't used to be documented but now are:
  158.  
  159.     - flex interprets "^foo|bar" differently from lex.  flex interprets
  160.       it as "match either a 'foo' or a 'bar', providing it comes at the
  161.       beginning of a line", whereas lex interprets it as "match either
  162.       a 'foo' at the beginning of a line, or a 'bar' anywhere".
  163.  
  164.     - flex initializes the global "yyin" on the first call to the
  165.       scanner, while lex initializes it at compile-time.
  166.  
  167.     - yy_switch_to_buffer() can be used in the yywrap() macro/routine.
  168.  
  169.     - flex scanners do not use stdio for their input, and hence when
  170.       writing an interactive scanner one must explictly call fflush()
  171.       after writing out a prompt.
  172.  
  173.     - flex scanner can be made reentrant (after a fashion) by using
  174.       "yyrestart( yyin );".  This is useful for interactive scanners
  175.       which have interrupt handlers that long-jump out of the scanner.
  176.  
  177.     - a defense of why yylineno is not supported is included, along
  178.       with a suggestion on how to convert scanners which rely on it.
  179.  
  180.  
  181.     Other changes:
  182.  
  183.     - Prototypes and proper declarations of void routines have
  184.       been added to the flex source code, courtesy of Kevin B. Kenny.
  185.  
  186.     - Routines dealing with memory allocation now use void* pointers
  187.       instead of char* - see Makefile for porting implications.
  188.  
  189.     - Error-checking is now done when flex closes a file.
  190.  
  191.     - Various lint tweaks were added to reduce the number of gripes.
  192.  
  193.     - Makefile has been further parameterized to aid in porting.
  194.  
  195.     - Support for SCO Unix added.
  196.  
  197.     - Flex now sports the latest & greatest UC copyright notice
  198.       (which is only slightly different from the previous one).
  199.  
  200.     - A note has been added to flexdoc.1 mentioning work in progress
  201.       on modifying flex to generate straight C code rather than a
  202.       table-driven automaton, with an email address of whom to contact
  203.       if you are working along similar lines.
  204.  
  205.  
  206. Changes between 2.2 Patch #3 (30Mar90) and 2.2 Patch #2:
  207.  
  208.     - fixed bug which caused -I scanners to bomb
  209.  
  210.  
  211. Changes between 2.2 Patch #2 (27Mar90) and 2.2 Patch #1:
  212.  
  213.     - fixed bug writing past end of input buffer in yyunput()
  214.     - fixed bug detecting NUL's at the end of a buffer
  215.  
  216.  
  217. Changes between 2.2 Patch #1 (23Mar90) and 2.2 (alpha) release:
  218.  
  219.     - Makefile fixes: definition of MAKE variable for systems
  220.       which don't have it; installation of flexdoc.1 along with
  221.       flex.1; fixed two bugs which could cause "bigtest" to fail.
  222.  
  223.     - flex.skel fix for compiling with g++.
  224.  
  225.     - README and flexdoc.1 no longer list an out-of-date BITNET address
  226.       for contacting me.
  227.  
  228.     - minor typos and formatting changes to flex.1 and flexdoc.1.
  229.  
  230.  
  231. Changes between 2.2 (alpha) release of March '90 and previous release:
  232.  
  233.     User-visible:
  234.  
  235.     - Full user documentation now available.
  236.  
  237.     - Support for 8-bit scanners.
  238.  
  239.     - Scanners now accept NUL's.
  240.  
  241.     - A facility has been added for dealing with multiple
  242.       input buffers.
  243.  
  244.     - Two manual entries now.  One which fully describes flex
  245.       (rather than just its differences from lex), and the
  246.       other for quick(er) reference.
  247.  
  248.     - A number of changes to bring flex closer into compliance
  249.       with the latest POSIX lex draft:
  250.  
  251.         %t support
  252.         flex now accepts multiple input files and concatenates
  253.             them together to form its input
  254.         previous -c (compress) flag renamed -C
  255.         do-nothing -c and -n flags added
  256.         Any indented code or code within %{}'s in section 2 is
  257.             now copied to the output
  258.  
  259.     - yyleng is now a bona fide global integer.
  260.  
  261.     - -d debug information now gives the line number of the
  262.       matched rule instead of which number rule it was from
  263.       the beginning of the file.
  264.  
  265.     - -v output now includes a summary of the flags used to generate
  266.       the scanner.
  267.  
  268.     - unput() and yyrestart() are now globally callable.
  269.  
  270.     - yyrestart() no longer closes the previous value of yyin.
  271.  
  272.     - C++ support; generated scanners can be compiled with C++ compiler.
  273.  
  274.     - Primitive -lfl library added, containing default main()
  275.       which calls yylex().  A number of routines currently living
  276.       in the scanner skeleton will probably migrate to here
  277.       in the future (in particular, yywrap() will probably cease
  278.       to be a macro and instead be a function in the -lfl library).
  279.  
  280.     - Hexadecimal (\x) escape sequences added.
  281.  
  282.     - Support for MS-DOS, VMS, and Turbo-C integrated.
  283.  
  284.     - The %used/%unused operators have been deprecated.  They
  285.       may go away soon.
  286.  
  287.  
  288.     Other changes:
  289.  
  290.     - Makefile enhanced for easier testing and installation.
  291.     - The parser has been tweaked to detect some erroneous
  292.       constructions which previously were missed.
  293.     - Scanner input buffer overflow is now detected.
  294.     - Bugs with missing "const" declarations fixed.
  295.     - Out-of-date Minix/Atari patches provided.
  296.     - Scanners no longer require printf() unless FLEX_DEBUG is being used.
  297.     - A subtle input() bug has been fixed.
  298.     - Line numbers for "continued action" rules (those following
  299.       the special '|' action) are now correct.
  300.     - unput() bug fixed; had been causing problems porting flex to VMS.
  301.     - yymore() handling rewritten to fix bug with interaction
  302.       between yymore() and trailing context.
  303.     - EOF in actions now generates an error message.
  304.     - Bug involving -CFe and generating equivalence classes fixed.
  305.     - Bug which made -CF be treated as -Cf fixed.
  306.     - Support for SysV tmpnam() added.
  307.     - Unused #define's for scanner no longer generated.
  308.     - Error messages which are associated with a particular input
  309.       line are now all identified with their input line in standard
  310.       format.
  311.     - % directives which are valid to lex but not to flex are
  312.       now ignored instead of generating warnings.
  313.     - -DSYS_V flag can now also be specified -DUSG for System V
  314.       compilation.
  315.  
  316.  
  317. Changes between 2.1 beta-test release of June '89 and previous release:
  318.  
  319.     User-visible:
  320.  
  321.     - -p flag generates a performance report to stderr.  The report
  322.       consists of comments regarding features of the scanner rules
  323.       which result in slower scanners.
  324.  
  325.     - -b flag generates backtracking information to lex.backtrack.
  326.       This is a list of scanner states which require backtracking
  327.       and the characters on which they do so.  By adding rules
  328.       one can remove backtracking states.  If all backtracking states
  329.       are eliminated, the generated scanner will run faster.
  330.       Backtracking is not yet documented in the manual entry.
  331.  
  332.     - Variable trailing context now works, i.e., one can have
  333.       rules like "(foo)*/[ \t]*bletch".  Some trailing context
  334.       patterns still cannot be properly matched and generate
  335.       error messages.  These are patterns where the ending of the
  336.       first part of the rule matches the beginning of the second
  337.       part, such as "zx*/xy*", where the 'x*' matches the 'x' at
  338.       the beginning of the trailing context.  Lex won't get these
  339.       patterns right either.
  340.  
  341.     - Faster scanners.
  342.  
  343.     - End-of-file rules.  The special rule "<<EOF>>" indicates
  344.       actions which are to be taken when an end-of-file is
  345.       encountered and yywrap() returns non-zero (i.e., indicates
  346.       no further files to process).  See manual entry for example.
  347.  
  348.     - The -r (reject used) flag is gone.  flex now scans the input
  349.       for occurrences of the string "REJECT" to determine if the
  350.       action is needed.  It tries to be intelligent about this but
  351.       can be fooled.  One can force the presence or absence of
  352.       REJECT by adding a line in the first section of the form
  353.       "%used REJECT" or "%unused REJECT".
  354.  
  355.     - yymore() has been implemented.  Similarly to REJECT, flex
  356.       detects the use of yymore(), which can be overridden using
  357.       "%used" or "%unused".
  358.  
  359.     - Patterns like "x{0,3}" now work (i.e., with lower-limit == 0).
  360.  
  361.     - Removed '\^x' for ctrl-x misfeature.
  362.  
  363.     - Added '\a' and '\v' escape sequences.
  364.  
  365.     - \<digits> now works for octal escape sequences; previously
  366.       \0<digits> was required.
  367.  
  368.     - Better error reporting; line numbers are associated with rules.
  369.  
  370.     - yyleng is a macro; it cannot be accessed outside of the
  371.       scanner source file.
  372.  
  373.     - yytext and yyleng should not be modified within a flex action.
  374.  
  375.     - Generated scanners #define the name FLEX_SCANNER.
  376.  
  377.     - Rules are internally separated by YY_BREAK in lex.yy.c rather
  378.       than break, to allow redefinition.
  379.  
  380.     - The macro YY_USER_ACTION can be redefined to provide an action
  381.       which is always executed prior to the matched rule's action.
  382.     
  383.     - yyrestart() is a new action which can be used to restart
  384.       the scanner after it has seen an end-of-file (a "real" one,
  385.       that is, one for which yywrap() returned non-zero).  It takes
  386.       a FILE* argument indicating a new file to scan and sets
  387.       things up so that a subsequent call to yylex() will start
  388.       scanning that file.
  389.  
  390.     - Internal scanner names all preceded by "yy_"
  391.  
  392.     - lex.yy.c is deleted if errors are encountered during processing.
  393.  
  394.     - Comments may be put in the first section of the input by preceding
  395.       them with '#'.
  396.  
  397.  
  398.  
  399.     Other changes:
  400.  
  401.     - Some portability-related bugs fixed, in particular for machines
  402.       with unsigned characters or sizeof( int* ) != sizeof( int ).
  403.       Also, tweaks for VMS and Microsoft C (MS-DOS), and identifiers all
  404.       trimmed to be 31 or fewer characters.  Shortened file names
  405.       for dinosaur OS's.  Checks for allocating > 64K memory
  406.       on 16 bit'ers.  Amiga tweaks.  Compiles using gcc on a Sun-3.
  407.     - Compressed and fast scanner skeletons merged.
  408.     - Skeleton header files done away with.
  409.     - Generated scanner uses prototypes and "const" for __STDC__.
  410.     - -DSV flag is now -DSYS_V for System V compilation.
  411.     - Removed all references to FTL language.
  412.     - Software now covered by BSD Copyright.
  413.     - flex will replace lex in subsequent BSD releases.
  414.